Auctions traditionally include the sale of goods from a seller to a buyer. A typical auction includes multiple buyers bidding on a good, referred to as a forward auction. However, one type of auction is a reverse auction or procurement auction, in which multiple sellers compete to sell goods to a single buyer. Often, the buyer will expend a significant amount of resources, including time, money and other resources, to obtain the desired goods at a procurement auction. For example, the buyer needs 10 lots of item X, 15 lots of item Y, and 20 lots of item Z. The buyer receives 5 bids from sellers A-E to deliver item X, another 5 bids from sellers F-J to deliver item Y, and still another 5 bids from sellers K-O to deliver item Z. With a total of 15 bids for items X, Y and Z, the buyer is faced with a costly and time-consuming process for selecting the bids for satisfying the buyer's requests for items X, Y and Z. Because of the time and costs required, typical procurement auctions do not provide an efficient mechanism for selecting bids in a timely and cost-effective manner. Typical auctions also do not provide a mechanism for handling constraints or bundles of constraints, including arbitrary constraints and constraints that are difficult to articulate.